package io.renren.modules.app.message.handler;

import cn.hutool.core.util.StrUtil;
import io.renren.modules.app.message.MessageResult;
import org.springframework.scheduling.annotation.Async;

import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * @author :
 * @version V1.0
 * @Project:
 * @Package
 * @Description:
 * @date
 **/
public interface JdVopMessageHandler {



    /**
     * 读消息
     * @param msg
     */
    void read(MessageResult msg);

    /**
     * 
     * @param msgs
     */
    @Async
    void batchRead(List<MessageResult> msgs);

    /**
     * 处理消息
     * @param msg
     */
    default void handle(MessageResult msg){
        System.out.println(msg.toString());
    }

    /**
     * 发送消息已读事件
     * @param msg 消息体
     * @param flag 是否需要调用京东消息删除接口
     */
    default void notifyMsgReadEvent(MessageResult msg,boolean flag){
        System.out.println("未设置消息删除方法");
    }

    /**
     * 根据KEY获取消息内容
     * @param msg
     * @param key
     * @return
     */
    default String getMsg(MessageResult msg, String key){
        if(Objects.isNull(msg)  || StrUtil.isBlank(key)) return null;
        Map<String,String> data=msg.getResult();
        if(Objects.isNull(data) || data.size()==0) return null;
        return data.getOrDefault(key,null);
    }
    /**
     * 消息剩余个数已读后-1
     */
    int decrement();

    /**
     * 设置消息剩余个数
     * @param total
     */
    void setMsgTotal(int total);

    /**
     * 获取消息剩余个数总数
     * @return
     */
    int getMsgTotal();


}
